/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ec.socialfun.controladores;

import com.ec.socialfun.enumeradores.ParametrosEnum;
import com.ec.socialfun.excepciones.ParametroException;
import com.ec.socialfun.servicios.ParametrosFacade;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.jboss.logging.Logger;

/**
 *
 * @author DESARROLLO
 */
@ManagedBean
@RequestScoped
public class ImagenesPublicidad implements Serializable {

    private static final Logger LOG = Logger.getLogger(Imagenes.class.getName());
    @EJB
    ParametrosFacade parametrosFacade;
    private List[] listaGeneral;

    public List[] getListaGeneral() {
        return listaGeneral;
    }

    public void setListaGeneral(List[] listaGeneral) {
        this.listaGeneral = listaGeneral;
    }

    @PostConstruct
    public void init() {
        try {
            String nombreImagenPublicidad = parametrosFacade.recuperaPorNombre(ParametrosEnum.NOMBRE_IMAGEN_PUBLICIDAD.getNombre()).getPaValor();
            String tipoImagenPublicidad = parametrosFacade.recuperaPorNombre(ParametrosEnum.TIPO_IMAGEN_PUBLICIDAD.getNombre()).getPaValor();
            int numeroImagenes = Integer.parseInt(parametrosFacade.recuperaPorNombre(ParametrosEnum.FOTOS_PAGINA_INTERNA.getNombre()).getPaValor());
            boolean esPar = numeroImagenes % 2 == 0 ? true : false;

            if (numeroImagenes > 4) {
                // crea arreglo de 4
                listaGeneral = new ArrayList[4];
                for (int i = 0; i < 4; i++) {
                    listaGeneral[i] = new ArrayList<String>();
                }
            } else {
                //crea arreglo del numero de imagenes
                listaGeneral = new ArrayList[numeroImagenes];
                for (int i = 0; i < numeroImagenes; i++) {
                    listaGeneral[i] = new ArrayList<String>();
                }
            }

            int numeroImagenesPorFila = 0;
            int numeroImagenesResiduo = 0;
            if (esPar & numeroImagenes >= 4) {
                numeroImagenesPorFila = numeroImagenes / 4;
                numeroImagenesResiduo = numeroImagenes % 4;
            } else if (esPar & numeroImagenes < 4) {
                numeroImagenesPorFila = 1;
            } else if (!esPar & numeroImagenes > 4) {
                numeroImagenesPorFila = numeroImagenes / 4;
                numeroImagenesResiduo = numeroImagenes % 4;
            } else if (!esPar & numeroImagenes < 4) {
                numeroImagenesPorFila = 1;
            }

            int contadorImagenes = 1;
            for (int i = 0; i < listaGeneral.length; i++) {
                for (int j = 0; j < numeroImagenesPorFila; j++) {
                    listaGeneral[i].add(nombreImagenPublicidad + contadorImagenes + tipoImagenPublicidad);
                    contadorImagenes++;
                }
            }

            int numeroLista = 0;
            for (int i = 0; i < numeroImagenesResiduo; i++) {
                listaGeneral[numeroLista].add(nombreImagenPublicidad + contadorImagenes + tipoImagenPublicidad);
                contadorImagenes++;
                numeroLista++;
                if (numeroLista + 1 == listaGeneral.length) {
                    numeroLista = 0;
                }
            }

        } catch (ParametroException e) {
             listaGeneral = new ArrayList[0];
            LOG.error("Error al obtener parametro de imagenes principal " + e);
        }

    }

    public ImagenesPublicidad() {
    }
}
